class UsuariosYOtros < ActiveRecord::Migration
  def self.up
    #cambio el nombre de los campos referentes al porcentaje de pagos de presupuesto
    rename_column :presupuestos, :porcentaje_primer_pago, :porcentaje_pago_1
    rename_column :presupuestos, :porcentaje_segundo_pago, :porcentaje_pago_2
    rename_column :presupuestos, :porcentaje_tercer_pago, :porcentaje_pago_3
    #otro campo mas para presupuestos que me dice donde está fisicamente ubicado 
    #el presupuesto en el disco duro
    add_column :presupuestos, :ruta_presupuesto_fisico, :text, :limit => "500"
    
    #para que al crear un presupuesto de un clte se sepa y adjudique automaticamente que porcentajes tiene
    add_column :clientes, :porcentaje_pago_1, :integer 
    add_column :clientes, :porcentaje_pago_2, :integer 
    add_column :clientes, :porcentaje_pago_3, :integer 
    
    #añado 2 campos en clientes necesarios para rellenar las facturas
    add_column :clientes, :direccion_cliente, :text, :limit => "500"
    add_column :clientes, :cif_cliente, :string, :limit => "20"
    
    rename_column :facturas, :es_primer_pago, :es_pago_1
    rename_column :facturas, :es_segundo_pago, :es_pago_2
    rename_column :facturas, :es_tercer_pago, :es_pago_3
    
        
    create_table :usuarios do |t|
     t.column :nick_usuario, :string, :limit => "100" 
     t.column :nombre_usuario, :string, :limit => "100"
     t.column :apellidos_usuario, :string, :limit => "150"
     t.column :mail_usuario, :string, :limit => "100" , :null => false
     t.column :clave_usuario, :string, :limit => "25" , :null => false
     t.column :es_cliente, :boolean
    end
    
    create_table :proyectos_usuarios do |t|
      t.column :proyecto_id, :int, :null => false
      t.column :usuario_id, :int, :null => false
    end 

    create_table :clientes_usuarios do |t|
      t.column :cliente_id, :int, :null => false
      t.column :usuario_id, :int, :null => false
    end     
    
  execute "ALTER TABLE proyectos_usuarios ADD CONSTRAINT fk_proyectos_usuarios_proyectos FOREIGN KEY ( proyecto_id ) REFERENCES proyectos( id ) "
  execute "ALTER TABLE proyectos_usuarios ADD CONSTRAINT fk_proyectos_usuarios_usuarios FOREIGN KEY ( usuario_id ) REFERENCES usuarios( id ) "
  execute "ALTER TABLE clientes_usuarios ADD CONSTRAINT fk_clientes_usuarios_clientes FOREIGN KEY ( cliente_id ) REFERENCES clientes( id ) "
  execute "ALTER TABLE clientes_usuarios ADD CONSTRAINT fk_clientes_usuarios_usuarios FOREIGN KEY ( usuario_id ) REFERENCES usuarios( id ) "
    
  end

  def self.down
    #cambio el nombre de los campos referentes al porcentaje de pagos de presupuesto
    rename_column :presupuestos, :porcentaje_pago_1, :porcentaje_primer_pago
    rename_column :presupuestos, :porcentaje_pago_2, :porcentaje_segundo_pago
    rename_column :presupuestos, :porcentaje_pago_3, :porcentaje_tercer_pago
    #otro campo mas para presupuestos que me dice donde está fisicamente ubicado 
    #el presupuesto en el disco duro
    remove_column :presupuestos, :ruta_presupuesto_fisico
    
    #para que al crear un presupuesto de un clte se sepa y adjudique automaticamente que porcentajes tiene
    remove_column :clientes, :porcentaje_pago_1
    remove_column :clientes, :porcentaje_pago_2
    remove_column :clientes, :porcentaje_pago_3
    
    #añado 2 campos en clientes necesarios para rellenar las facturas
    remove_column :clientes, :direccion_cliente
    remove_column :clientes, :cif_cliente
    
    #para hacer el seguimiento del pago de las facturas
    rename_column :facturas, :es_pago_1, :es_primer_pago
    rename_column :facturas, :es_pago_2, :es_segundo_pago
    rename_column :facturas, :es_pago_3, :es_tercer_pago    
    
        
    drop_table :proyectos_usuarios 
    drop_table :clientes_usuarios 
    drop_table :usuarios 
    
    # ¿no hace falta borrar (REMOVE) las "constraint"?
  end
end
